﻿#ifndef TCPSESSION_H
#define TCPSESSION_H

#include <iostream>
#include <string>
#include <vector>
#include "Thread.h"
#include "tcpserver.h"
#include "type_def.h"
#include "json11.hpp"

using namespace std;
using namespace json11;

//class TcpSession;

extern vector<clientData *> *clientArray; // 用户数据数组
extern pthread_mutex_t mutex;             // 互斥锁

class TcpSession : public Thread {
  private:
    clientData *cd;

  public:
    enum MSG_TYPE {
        LOGIN = 1, COMMODITY, ORDER, QUIT, EXIT, AMOUNT,
    };
    TcpSession(clientData *cd);
    virtual ~TcpSession();
    void run() override;
    void closeConnect();
    void displayAllClient();  // 显示所有客户端信息
    string getValueStr(string *msg, const char *key); // 从json中获取指定key的string value
    int getValueInt(string *msg, const char *key); // 从json中获取指定key的int value
    void clientLogin(string *json);
    void serverSingleMsg(string &msg);  // 单发数据
    void getCommodityList(string &json);  // 获取商品数据
    void submitOrder(string &json);  // 提交订单
    void updateAmount(string &json);  // 修改库存
};

#endif // TCPSESSION_H
